#include "hal_gpio.h"
#include "driverlib.h"

bool hal_gpio_unlock_port(hal_gpio_port_t port)
{
    switch (port)
    {
        case HAL_GPIO_PORT_A:
            GPIO_unlockPortConfig(GPIO_PORT_A, 0xFFFFFFFF);
            break;
        case HAL_GPIO_PORT_B:
            GPIO_unlockPortConfig(GPIO_PORT_B, 0xFFFFFFFF);
            break;
        case HAL_GPIO_PORT_H:
            GPIO_unlockPortConfig(GPIO_PORT_H, 0xFFFFFFFF);
            break;
        default:
            return false;
    }
    return true;
}

//void hal_gpio_board_init(void)
//{
//    // 批量配置AGPIO为数字
//    hal_gpio_set_analog_mode(12U, false);
//    hal_gpio_set_analog_mode(13U, false);
//    hal_gpio_set_analog_mode(20U, false);
//    hal_gpio_set_analog_mode(21U, false);
//    hal_gpio_set_analog_mode(28U, false);
//
//    // 其他pinmux/上下拉/方向初始化可在此添加，如：
//    // hal_gpio_set_pinmux(DEVICE_GPIO_CFG_LED1);
//    // hal_gpio_set_pinmux(DEVICE_GPIO_CFG_CANRXA);
//}

void hal_gpio_set_analog_mode(uint32_t pin, bool is_analog)
{
    GPIO_setAnalogMode(pin, is_analog ? GPIO_ANALOG_ENABLED : GPIO_ANALOG_DISABLED);
}

void hal_gpio_set_pinmux(uint32_t pinConfig)
{
    GPIO_setPinConfig(pinConfig);
}
